@ -7,7 +7,10 @@
//
// This File is contributed by Alexander Schier
// last change: 29.12.2004
// extended by Michael Christen, 4.7.2008
//
// LICENSE
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
@ -21,29 +24,6 @@
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// Using this software in any meaning (reading, learning, copying, compiling,
// running) means that you agree that the Author(s) is (are) not responsible
// for cost, loss of data or any harm that may be caused directly or indirectly
// by usage of this softare or this documentation. The usage of this software
// is on your own risk. The installation and usage (starting/running) of this
// software may allow other people or application to access your computer and
// any attached devices and is highly dependent on the configuration of the
// software which must be done by the user of the software; the author(s) is
// (are) also not responsible for proper configuration and usage of the
// software, even if provoked by documentation provided together with
// the software.
//
// Any changes to this file according to the GPL as documented in the file
// gpl.txt aside this file in the shipment you received can be done to the
// lines that follows this copyright notice here, but changes must not be
// done inside the copyright notive above. A re-distribution must contain
// the intact and unchanged copyright notice.
// Contributions and changes to the program code must be marked as such.
// You must compile this file with
// javac -classpath .:../Classes Blacklist_p.java
// if the shell's current path is HTROOT
import java.io.BufferedWriter ;
import java.io.File ;
@ -65,106 +45,116 @@ import de.anomic.yacy.yacyURL;
public class ConfigSkins_p {
private static boolean copyFile ( File from , File to ) {
if ( from = = null | | to = = null ) {
return false ;
}
try {
serverFileUtils . copy ( from , to ) ;
return true ;
} catch ( IOException e ) {
return false ;
}
}
public static serverObjects respond ( httpHeader header , serverObjects post , serverSwitch < ? > env ) {
serverObjects prop = new serverObjects ( ) ;
plasmaSwitchboard sb = ( plasmaSwitchboard ) env ;
String skinPath = new File ( env . getRootPath ( ) , env . getConfig ( "skinPath" , "DATA/SKINS" ) ) . toString ( ) ;
private static boolean changeSkin ( plasmaSwitchboard sb , String skinPath , String skin ) {
File htdocsDir = new File ( sb . getConfigPath ( "htDocsPath" , "DATA/HTDOCS" ) , "env" ) ;
File styleFile = new File ( htdocsDir , "style.css" ) ;
File skinFile = new File ( skinPath , skin ) ;
// Fallback
prop . put ( "currentskin" , "" ) ;
prop . put ( "status" , "0" ) ; // nothing
styleFile . getParentFile ( ) . mkdirs ( ) ;
if ( copyFile ( skinFile , styleFile ) ) {
sb . setConfig ( "currentSkin" , skin . substring ( 0 , skin . length ( ) - 4 ) ) ;
return true ;
}
return false ;
}
String [ ] skinFiles = listManager . getDirListing ( skinPath ) ;
if ( skinFiles = = null ) {
return prop ;
}
public static serverObjects respond ( httpHeader header , serverObjects post , serverSwitch < ? > env ) {
serverObjects prop = new serverObjects ( ) ;
plasmaSwitchboard switchboard = ( plasmaSwitchboard ) env ;
String skinPath = new File ( env . getRootPath ( ) , env . getConfig ( "skinPath" , "DATA/SKINS" ) ) . toString ( ) ;
// if there are no skins, use the current style as default
// normally only invoked at first start of YaCy
if ( skinFiles . length = = 0 ) {
try {
serverFileUtils . copy ( new File ( env . getRootPath ( ) , "htroot/env/style.css" ) , new File ( skinPath , "default.css" ) ) ;
env . setConfig ( "currentSkin" , "default" ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
}
}
//Fallback
prop . put ( "currentskin" , "" ) ;
prop . put ( "status" , "0" ) ; //nothing
String [ ] skinFiles = listManager . getDirListing ( skinPath ) ;
if ( skinFiles = = null ) {
return prop ;
}
//if there are no skins, use the current style as default
//normally only invoked at first start of YaCy
if ( skinFiles . length = = 0 ) {
copyFile ( new File ( env . getRootPath ( ) , "htroot/env/style.css" ) , new File ( skinPath , "default.css" ) ) ;
env . setConfig ( "currentSkin" , "default" ) ;
}
if ( post ! = null ) {
//change skin
if ( post . containsKey ( "use_button" ) & & post . get ( "skin" ) ! = null ) {
changeSkin ( switchboard , skinPath , post . get ( "skin" ) ) ;
//delete skin
} else if ( post . containsKey ( "delete" ) ) {
File skinfile = new File ( skinPath , post . get ( "skin" ) ) ;
skinfile . delete ( ) ;
if ( post ! = null ) {
if ( post . containsKey ( "use_button" ) & & post . get ( "skin" ) ! = null ) {
// change skin
changeSkin ( sb , skinPath , post . get ( "skin" ) ) ;
//load skin from URL
} else if ( post . containsKey ( "url" ) ) {
String url = post . get ( "url" ) ;
ArrayList < String > skinVector ;
try {
yacyURL u = new yacyURL ( url , null ) ;
skinVector = nxTools . strings ( HttpClient . wget ( u . toString ( ) ) , "UTF-8" ) ;
} catch ( IOException e ) {
prop . put ( "status" , "1" ) ; //unable to get URL
prop . put ( "status_url" , url ) ;
return prop ;
}
try {
Iterator < String > it = skinVector . iterator ( ) ;
File skinFile = new File ( skinPath , url . substring ( url . lastIndexOf ( "/" ) , url . length ( ) ) ) ;
BufferedWriter bw = new BufferedWriter ( new PrintWriter ( new FileWriter ( skinFile ) ) ) ;
}
if ( post . containsKey ( "delete_button" ) ) {
// delete skin
File skinfile = new File ( skinPath , post . get ( "skin" ) ) ;
skinfile . delete ( ) ;
while ( it . hasNext ( ) ) {
bw . write ( it . next ( ) + "\n" ) ;
}
bw . close ( ) ;
} catch ( IOException e ) {
prop . put ( "status" , "2" ) ; //error saving the skin
return prop ;
}
if ( post . containsKey ( "use_skin" ) & & ( post . get ( "use_skin" ) ) . equals ( "on" ) ) {
changeSkin ( switchboard , skinPath , url . substring ( url . lastIndexOf ( "/" ) , url . length ( ) ) ) ;
}
}
}
}
if ( post . containsKey ( "install_button" ) ) {
// load skin from URL
String url = post . get ( "url" ) ;
ArrayList < String > skinVector ;
try {
yacyURL u = new yacyURL ( url , null ) ;
skinVector = nxTools . strings ( HttpClient . wget ( u . toString ( ) ) , "UTF-8" ) ;
} catch ( IOException e ) {
prop . put ( "status" , "1" ) ; // unable to get URL
prop . put ( "status_url" , url ) ;
return prop ;
}
try {
Iterator < String > it = skinVector . iterator ( ) ;
File skinFile = new File ( skinPath , url . substring ( url . lastIndexOf ( "/" ) , url . length ( ) ) ) ;
BufferedWriter bw = new BufferedWriter ( new PrintWriter ( new FileWriter ( skinFile ) ) ) ;
//reread skins
skinFiles = listManager . getDirListing ( skinPath ) ;
int i ;
for ( i = 0 ; i < = skinFiles . length - 1 ; i + + ) {
if ( skinFiles [ i ] . endsWith ( ".css" ) ) {
prop . put ( "skinlist_" + i + "_file" , skinFiles [ i ] ) ;
prop . put ( "skinlist_" + i + "_name" , skinFiles [ i ] . substring ( 0 , skinFiles [ i ] . length ( ) - 4 ) ) ;
}
}
prop . put ( "skinlist" , i ) ;
while ( it . hasNext ( ) ) {
bw . write ( it . next ( ) + "\n" ) ;
}
bw . close ( ) ;
} catch ( IOException e ) {
prop . put ( "status" , "2" ) ; // error saving the skin
return prop ;
}
if ( post . containsKey ( "use_skin" ) & & ( post . get ( "use_skin" , "" ) ) . equals ( "on" ) ) {
changeSkin ( sb , skinPath , url . substring ( url . lastIndexOf ( "/" ) , url . length ( ) ) ) ;
}
}
if ( post . containsKey ( "searchpage_button" ) ) {
sb . setConfig ( "promoteSearchPageGreeting" , post . get ( "promoteSearchPageGreeting" , "" ) ) ;
sb . setConfig ( "promoteSearchPageGreeting.homepage" , post . get ( "promoteSearchPageGreeting.homepage" , "" ) ) ;
sb . setConfig ( "promoteSearchPageGreeting.largeImage" , post . get ( "promoteSearchPageGreeting.largeImage" , "" ) ) ;
sb . setConfig ( "promoteSearchPageGreeting.smallImage" , post . get ( "promoteSearchPageGreeting.smallImage" , "" ) ) ;
}
}
prop . put ( "currentskin" , env . getConfig ( "currentSkin" , "default" ) ) ;
return prop ;
// reread skins
skinFiles = listManager . getDirListing ( skinPath ) ;
int i ;
for ( i = 0 ; i < = skinFiles . length - 1 ; i + + ) {
if ( skinFiles [ i ] . endsWith ( ".css" ) ) {
prop . put ( "skinlist_" + i + "_file" , skinFiles [ i ] ) ;
prop . put ( "skinlist_" + i + "_name" , skinFiles [ i ] . substring ( 0 , skinFiles [ i ] . length ( ) - 4 ) ) ;
}
}
prop . put ( "skinlist" , i ) ;
prop . put ( "currentskin" , env . getConfig ( "currentSkin" , "default" ) ) ;
prop . put ( "promoteSearchPageGreeting" , sb . getConfig ( "promoteSearchPageGreeting" , "" ) ) ;
prop . put ( "promoteSearchPageGreeting.homepage" , sb . getConfig ( "promoteSearchPageGreeting.homepage" , "" ) ) ;
prop . put ( "promoteSearchPageGreeting.largeImage" , sb . getConfig ( "promoteSearchPageGreeting.largeImage" , "" ) ) ;
prop . put ( "promoteSearchPageGreeting.smallImage" , sb . getConfig ( "promoteSearchPageGreeting.smallImage" , "" ) ) ;
String myaddress = sb . webIndex . seedDB . mySeed ( ) . getPublicAddress ( ) ;
if ( myaddress = = null ) myaddress = "localhost:" + sb . getConfig ( "port" , "8080" ) ;
prop . put ( "myaddress" , myaddress ) ;
return prop ;
}
private static boolean changeSkin ( plasmaSwitchboard sb , String skinPath , String skin ) {
File htdocsDir = new File ( sb . getConfigPath ( "htDocsPath" , "DATA/HTDOCS" ) , "env" ) ;
File styleFile = new File ( htdocsDir , "style.css" ) ;
File skinFile = new File ( skinPath , skin ) ;
styleFile . getParentFile ( ) . mkdirs ( ) ;
try {
serverFileUtils . copy ( skinFile , styleFile ) ;
sb . setConfig ( "currentSkin" , skin . substring ( 0 , skin . length ( ) - 4 ) ) ;
return true ;
} catch ( IOException e ) {
return false ;
}
}
}