зеркало из https://github.com/mozilla/gecko-dev.git
593 строки
15 KiB
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"
|
|
*/
|