gecko-dev/cmd/dialup/java/plugin/SetupPlugin.java

593 строки
15 KiB
Java

/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.npasw;
import netscape.plugin.Plugin;
import netscape.security.*;
import java.util.Hashtable;
import java.util.Enumeration;
import java.io.*;
import netscape.npasw.*;
public class SetupPlugin extends Plugin
{
static private Hashtable iniFileCache = new Hashtable();
static final public void debug( String s )
{
System.out.println( s );
}
final public String[] newStringArray( int numElements )
{
return new String[ numElements ];
}
final public void SetKiosk( boolean flag )
{
if ( privilegeCheck() == true )
SECURE_SetKiosk( flag );
}
final public void FlushCache()
{
if ( privilegeCheck() == false )
return;
for ( Enumeration iniFiles = iniFileCache.keys(); iniFiles.hasMoreElements(); )
{
File iniFile = (File)iniFiles.nextElement();
IniFileData iniFileData = (IniFileData)iniFileCache.get( iniFile );
try
{
//Trace.TRACE( "flushing ini cache object" );
iniFileData.flush();
}
catch ( Throwable e )
{
}
}
}
final public String GetFileContents( String filePath )
{
if ( privilegeCheck() == false )
return new String( "" );
String contents = "";
try
{
File file = new File( filePath );
if ( file.exists() && file.isFile() && file.canRead() )
{
FileInputStream is = new FileInputStream( file );
long length;
long bytesRead;
byte[] buffer = null;
length = file.length();
if ( length > 0 )
{
buffer = new byte[ (int)length ];
bytesRead = is.read( buffer );
if ( bytesRead != length )
buffer = null;
}
if ( buffer != null )
contents = new String( buffer );
}
}
catch ( Throwable e )
{
contents = "";
}
return contents;
}
final public void SetCacheState( String filePath, boolean writeThrough )
{
if ( privilegeCheck() == false )
return;
try
{
File file = new File( filePath );
IniFileData iniFile = (IniFileData)iniFileCache.get( file );
if ( iniFile == null )
return;
iniFile.setCacheState( writeThrough );
}
catch ( Throwable e )
{
//Trace.TRACE( "caught an exception: " + e.getMessage() );
return;
}
}
final public String GetNameValuePair( String filePath, String sectionName, String valueName )
{
/* if ( privilegeCheck() == true )
return SECURE_GetNameValuePair( filePath, sectionName, valueName);
else
return null;
*/
if ( privilegeCheck() == false )
return new String( "" );
final String section1 = sectionName;
final String value1 = valueName;
try
{
File file = new File( filePath );
//Trace.TRACE( "GetNameValuePair" );
//Trace.TRACE( " file: " + file.getName() );
//Trace.TRACE( " hash: " + file.hashCode() );
IniFileData iniFile = (IniFileData)iniFileCache.get( file );
if ( iniFile == null )
{
//Trace.TRACE( "file: " + file.getName() );
//Trace.TRACE( "iniFile is null" );
iniFile = new IniFileData( file );
iniFileCache.put( file, iniFile );
}
//Trace.TRACE( "getting file: " + filePath + " section: " + section1 + " value: " + value1 );
String value = iniFile.getValue( section1, value1 );
if ( value == null )
return new String( "" );
else
{
//Trace.TRACE( "returning: " + value );
return new String( value );
}
}
catch ( Throwable e )
{
//Trace.TRACE( "caught an exception: " + e.getMessage() );
return new String( "" );
}
}
final public void SetNameValuePair( String filePath, String sectionName, String name, String value )
{
/* if ( privilegeCheck() == true )
SECURE_SetNameValuePair( file, section, name, value );
*/
if ( privilegeCheck() == false )
return;
try
{
File file = new File( filePath );
//Trace.TRACE( "SetNameValuePair" );
//Trace.TRACE( " file: " + file.getName() );
//Trace.TRACE( " hash: " + file.hashCode() );
IniFileData iniFile = (IniFileData)iniFileCache.get( file );
if ( iniFile == null )
{
//Trace.TRACE( "file: " + file.getName() );
//Trace.TRACE( "iniFile is null" );
iniFile = new IniFileData( file );
iniFileCache.put( file, iniFile );
}
//Trace.TRACE( "setValue: " + sectionName + " " + name + " " + value );
iniFile.setValue( sectionName, name, value );
}
catch ( Throwable e )
{
}
}
final public Object ReadFile( String file )
{
if ( privilegeCheck() == true )
return SECURE_ReadFile( file );
else
return null;
}
final public void WriteFile( String file, Object data )
{
if ( privilegeCheck() == true )
SECURE_WriteFile( file, data );
}
final public String[] GetFolderContents( String path, String suffix )
{
/* if ( privilegeCheck() == true )
return SECURE_GetFolderContents( path, suffix );
else
return null ;
*/
if ( privilegeCheck() == false )
return null;
try
{
File dir = new File( path );
SuffixFilter filter = new SuffixFilter( suffix );
String[] fileList = dir.list( filter );
return fileList;
}
catch ( Exception e )
{
return null;
}
}
final public String[] GetRegInfo( boolean flushDataFlag )
{
if ( privilegeCheck() == true )
return SECURE_GetRegInfo( flushDataFlag );
else
return null;
}
final public void DesktopConfig( String accountName, String iconFilename, String acctsetFilename )
{
if ( privilegeCheck() == true )
SECURE_DesktopConfig( accountName, iconFilename, acctsetFilename );
}
final public boolean SaveTextToFile( String suggestedFilename, String data, boolean promptFlag )
{
if ( privilegeCheck() == true )
return SECURE_SaveTextToFile( suggestedFilename, data, promptFlag );
else
return false;
}
final public String EncryptString( String cleartext )
{
if ( privilegeCheck() == true )
return SECURE_EncryptString( cleartext );
else
return null;
}
final public String EncryptPassword( String cleartext )
{
if ( privilegeCheck() == true )
return SECURE_EncryptPassword( cleartext );
else
return null;
}
final public void OpenModemWizard()
{
if ( privilegeCheck() == true )
SECURE_OpenModemWizard();
}
final public void CloseModemWizard()
{
if ( privilegeCheck() == true )
SECURE_CloseModemWizard();
}
final public boolean IsModemWizardOpen()
{
if ( privilegeCheck() == true )
return SECURE_IsModemWizardOpen();
else
return false;
}
final public String[] GetModemList()
{
if ( privilegeCheck() == true )
return SECURE_GetModemList();
else
return null;
}
final public String GetCurrentModemName()
{
if ( privilegeCheck() == true )
return SECURE_GetCurrentModemName();
else
return null;
}
final public String GetModemType( String modem )
{
if ( privilegeCheck() == true )
return SECURE_GetModemType( modem );
else
return null;
}
final public boolean DialerConnect()
{
if ( privilegeCheck() == true )
return SECURE_DialerConnect();
else
return false;
}
final public void DialerHangup()
{
if ( privilegeCheck() == true )
SECURE_DialerHangup();
}
final public boolean IsDialerConnected()
{
if ( privilegeCheck() == true )
return SECURE_IsDialerConnected();
else
return false;
}
final public void DialerConfig( String dialerData[], boolean regMode )
{
if ( privilegeCheck() == true )
SECURE_DialerConfig( dialerData, regMode );
}
final public boolean GenerateComparePage( String localFolder, String sCGIUrl, String sRegRoot,
String metadataMode, String reggieData[] )
{
if ( privilegeCheck() == true )
return CPGenerator.generateComparePage( localFolder, sCGIUrl, sRegRoot, metadataMode, reggieData );
else
return false;
}
final public boolean GenerateMoreInfoPage( String isp )
{
if ( privilegeCheck() == true )
return CPGenerator.generateMoreInfoPage( isp );
else
return false;
}
final public String[] GetISPPopList( String isp )
{
if ( privilegeCheck() == true )
return CPGenerator.getISPPopList( isp );
else
return null;
}
final public void CreateConfigIAS( String isp, int index )
{
if ( privilegeCheck() == true )
CPGenerator.createConfigIAS( isp, index );
}
final public String GetISPDisplayName( String ispName )
{
if ( privilegeCheck() == true )
return CPGenerator.getISPDisplayName( ispName );
else
return null;
}
final public String GetISPSupportPhoneNumber( String ispName )
{
if ( privilegeCheck() == true )
return CPGenerator.getISPSupportPhoneNumber( ispName );
else
return null;
}
final public String GetISPModemNumber( String isp, int popIndex )
{
if ( privilegeCheck() == true )
return CPGenerator.getISPModemNumber( isp, popIndex );
else
return null;
}
final public String GetISPLanguage( String isp )
{
if ( privilegeCheck() == true )
return CPGenerator.getISPLanguage( isp );
else
return null;
}
final public String GetCurrentProfileDirectory()
{
if ( privilegeCheck() == true )
{
String temp = SECURE_GetCurrentProfileDirectory();
//Trace.TRACE( "getCurrentProfileDirectory: " + temp );
return temp;
}
else
return null;
}
final public String GetCurrentProfileName()
{
if ( privilegeCheck() == true )
return SECURE_GetCurrentProfileName();
else
return null;
}
final public void SetCurrentProfileName( String profileName )
{
if ( privilegeCheck() == true )
SECURE_SetCurrentProfileName( profileName );
}
final public String GetExternalEditor()
{
if ( privilegeCheck() == true )
return SECURE_GetExternalEditor();
else
return null;
}
final public void OpenFileWithEditor( String app, String file )
{
if ( privilegeCheck() == true )
SECURE_OpenFileWithEditor( app, file );
}
final public boolean NeedReboot()
{
if ( privilegeCheck() == true )
return SECURE_NeedReboot();
else
return false;
}
final public void Reboot( String accountSetupPathname )
{
if ( privilegeCheck() == true )
SECURE_Reboot( accountSetupPathname );
}
final public void QuitNavigator()
{
if ( privilegeCheck() == true )
{
FlushCache();
iniFileCache = null;
SECURE_QuitNavigator();
}
}
final public boolean CheckEnvironment()
{
if ( privilegeCheck() == true )
return SECURE_CheckEnvironment();
else
return false;
}
final public boolean Milan( String name, String value, boolean pushPullFlag, boolean extendedLengthFlag )
{
if ( privilegeCheck() == true )
return SECURE_Milan( name, value, pushPullFlag, extendedLengthFlag );
else
return false;
}
/*
Private methods:
*/
private boolean privilegeCheck()
{
boolean privilegeFlag = false;
try
{
PrivilegeManager.checkPrivilegeEnabled( "AccountSetup" ); // All Hail The King !!!
privilegeFlag = true;
}
catch ( Exception e )
{
System.out.println( "Account Setup Security Exception: " + e.toString() );
e.printStackTrace();
privilegeFlag = false;
}
// un-comment the following line for testing:
//privilegeFlag = true;
return privilegeFlag;
}
/*
Private native methods:
*/
private native void SECURE_SetKiosk( boolean flag );
//private native String SECURE_GetNameValuePair( String file, String section, String name );
private native void SECURE_SetNameValuePair( String file, String section, String name, String value );
private native Object SECURE_ReadFile( String file );
private native void SECURE_WriteFile( String file,Object data );
//private native String[] SECURE_GetFolderContents( String path, String suffix );
private native String[] SECURE_GetRegInfo( boolean flushDataFlag );
private native void SECURE_DesktopConfig( String accountName, String iconFilename, String acctsetFilename );
private native boolean SECURE_SaveTextToFile( String suggestedFilename, String data, boolean promptFlag );
private native String SECURE_EncryptString( String cleartext );
private native String SECURE_EncryptPassword( String cleartext );
private native void SECURE_OpenModemWizard();
private native void SECURE_CloseModemWizard();
private native boolean SECURE_IsModemWizardOpen();
private native String[] SECURE_GetModemList();
private native String SECURE_GetModemType( String modem );
private native String SECURE_GetCurrentModemName();
private native boolean SECURE_DialerConnect();
private native void SECURE_DialerHangup();
private native boolean SECURE_IsDialerConnected();
private native void SECURE_DialerConfig( String dialerData[], boolean regMode );
private native String SECURE_GetCurrentProfileDirectory();
private native String SECURE_GetCurrentProfileName();
private native void SECURE_SetCurrentProfileName( String profileName );
private native String SECURE_GetExternalEditor();
private native void SECURE_OpenFileWithEditor( String app, String file );
private native boolean SECURE_NeedReboot();
private native void SECURE_Reboot( String accountSetupPathname );
private native void SECURE_QuitNavigator();
private native boolean SECURE_CheckEnvironment();
private native boolean SECURE_Milan( String name, String value, boolean pushPullFlag, boolean extendedLengthFlag );
}
/*
Note: routines passing/returning string arrays use the format: "VARIABLE=DATA"
*/