📄 dixie.java
字号:
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.reflect.*;
import StringTools;
/**
Simple class to start and control the mail (Smtp, Pop3, and Epass) servers.
Comments:
970915 Original code, lots of modifications
971006 Added real top processing
971027 More cleanup, focus on SMTP, forwarding
98xxxx Made into windows driven stuff
990110 Even more cleanup
990326 Split into separate files
20 Feb 2000 Made event states into anonymous classes
02 Mar 2000 Added WWW Server
12 Mar 2000 Removed most of the menu driven options
**/
/**
* Create a frame that can be closed; only used if run standalone.
*/
class dixie extends CFrame
{
private MenuBar menu;
private Letters letters;
public SmtpServer mailTask;
private Pop3Server popTask;
private EpassServer passTask;
private WWWServer wwwTask;
private FileWriter wout;
private boolean debugDixie = true;
private MainDialog f;
private CheckboxMenuItem debugBox;
private CheckboxMenuItem monitorBox;
private CheckboxMenuItem showStatusBox;
final private String dixiePropsString = "DixieMail.cfg";
final private String versionString = "DixieMail v1.7";
final private String authorString = "James Ghofulpo";
final private String homepageString = "http://welcome.to/reality";
final private String monitorProp = "monitorString";
final private String debugProp = "debugString";
final private String monitorConnectProp = "monitorConnect";
final private String clearLogProp = "clearLog";
final private String extensionsProp = "extensions";
final private String optionsProp = "options";
final private String showSplashScreenProp = "showSplash";
final private String hideMainWindowProp = "hideMainWindow";
final private String lastValue = "none";
final private String nullProperty = "<none>";
final private String generalHelpProp = "generalHelp";
final public String extensionListProp = "extensionList";
final public String languageHeader = "language.";
final public String usersHeader = "users.";
final public String extensionHeader = "extension.";
final public String passwordTrailer = ".password";
final private String extensionTrailer = ".extension";
final private String parameterTrailer = ".parameter";
final public String invalidExtension = ".";
final public String htmlHelp = "htmlHelp";
final private String outgoingName = "dixiemail.outgoing";
final private String servedDomainsName = "dixiemail.served";
final private String configFileDescription = "DixieMail Configuration";
public Config configuration;
public Properties dixieProps;
public static final int DM_WWW = 1;
public static final int DM_SMTP = 2;
public static final int DM_POP3 = 3;
public static final int DM_PASS = 4;
String getVersionString()
{
return versionString;
}
String getAuthorString()
{
return authorString;
}
String getHomepageString()
{
return homepageString;
}
String getNullProperty()
{
return nullProperty;
}
private String getString( String propname )
{
return dixieProps.getProperty( languageHeader+propname,
languageHeader+propname );
}
String getInfo( String propname )
{
return dixieProps.getProperty( propname, propname );
}
public void setServedDomains( String value )
{
if ( value.length() == 0 )
{
value = nullProperty;
}
configuration.ServedDomains = value;
dixieProps.put( servedDomainsName, value );
saveProperties();
}
public void setOutgoingSMTP( String value )
{
if ( value.length() == 0 )
{
value = nullProperty;
}
configuration.OutgoingServer = value;
dixieProps.put( outgoingName, value );
saveProperties();
}
public void showMainWindow( boolean show )
{
this.setVisible( show );
}
void saveProperties()
{
StringTools.saveProps( dixieProps, dixiePropsString,
configFileDescription );
}
//***************************************************************
// main
//
// Main function - Instantiates new instance of Dixie
//***************************************************************
public static void main( String argv[] )
{
new dixie( "dixie.gif" );
}
//***************************************************************
// getUser
//
// Returns user information
//***************************************************************
public User getUser( String userName )
{
User info = new User();
info.password = dixieProps.getProperty(
usersHeader+userName+passwordTrailer,
User.invalidPassword );
info.parameter = getInfo( usersHeader+userName+parameterTrailer );
info.extension = getInfo( usersHeader+userName+extensionTrailer );
info.userName = userName;
return info;
}
//***************************************************************
// getPassword
//
// Returns a users password
//***************************************************************
public String getPassword( String user )
{
User info;
info = getUser( user );
return dixieProps.getProperty( usersHeader+user+
passwordTrailer, User.invalidPassword );
}
//***************************************************************
// validUser
//
// Checks if a user/password combination is valid
//***************************************************************
public boolean validUser( String user, String password )
{
if ( dixieProps.getProperty( usersHeader+user+
passwordTrailer, User.invalidPassword ).equals( password ) )
{
return true;
}
return false;
}
//***************************************************************
// deleteUser
//
// Deletes a user
//***************************************************************
public void deleteUser( String user )
{
dixieProps.remove( usersHeader+user+extensionTrailer );
dixieProps.remove( usersHeader+user+passwordTrailer );
dixieProps.remove( usersHeader+user+parameterTrailer );
saveProperties();
}
//***************************************************************
// addUser
//
// Changes/adds a user/password combination
//***************************************************************
public void addUser( User user )
{
deleteUser( user.userName );
dixieProps.put( usersHeader+user.userName+passwordTrailer,
user.password );
dixieProps.put( usersHeader+user.userName+extensionTrailer,
user.extension );
dixieProps.put( usersHeader+user.userName+parameterTrailer,
user.parameter );
saveProperties();
}
//***************************************************************
// changePassword
//
// Changes/adds a user/password combination
//***************************************************************
public void changePassword( String user, String password )
{
deleteUser( user );
dixieProps.put( usersHeader+user+passwordTrailer, password );
dixieProps.put( usersHeader+user+extensionTrailer, invalidExtension );
dixieProps.put( usersHeader+user+parameterTrailer, invalidExtension );
saveProperties();
}
//***************************************************************
// dixie
//
// Main function - Builds menus and anonymous classes for
// the actions that need to be performed in them
//***************************************************************
public dixie( String iconName )
{
Menu subMenu;
CheckboxMenuItem cbox;
String tempProperty;
String extension;
int inx;
MenuItem temp;
configuration = new Config();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -