[Crear] Autoregistro Para source MoopleDev

Tema en 'MapleStory' iniciado por kodycia, 1 Ene 2011.

  1. kod

    kodycia
    Expand Collapse
    Subteniente

    Mensajes:
    533
    Me Gusta recibidos:
    16
    1.- agregamos [AutoRegister.java] en la seccion "Src/Client"


    PHP:
    package client;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import tools.DatabaseConnection;

    public class 
    AutoRegister {

        private static final 
    org.slf4j.Logger log org.slf4j.LoggerFactory.getLogger(MapleClient.class);
        private static final 
    int ACCOUNTS_PER_IP 3;
        public static final 
    boolean autoRegister true;
        public static 
    boolean success;

        public static 
    boolean getAccountExists(String login) {
            
    boolean accountExists false;
            
    Connection con DatabaseConnection.getConnection();
            try {
                
    PreparedStatement ps con.prepareStatement("SELECT name FROM accounts WHERE name = ?");
                
    ps.setString(1login);
                
    ResultSet rs ps.executeQuery();
                if (
    rs.first()) {
                    
    accountExists true;
                }
            } catch (
    Exception ex) {
            }
            return 
    accountExists;
        }

        public static 
    void createAccount(String loginString pwdString eip) {
            
    String sockAddr eip;
            
    Connection con;
            try {
                
    con DatabaseConnection.getConnection();
            } catch (
    Exception ex) {
                
    log.error("ERROR"ex);
                return;
            }
            try {
                
    PreparedStatement ipc con.prepareStatement("SELECT lastknownip FROM accounts WHERE lastknownip = ?");
                
    ipc.setString(1sockAddr.substring(1sockAddr.lastIndexOf(':')));
                
    ResultSet rs ipc.executeQuery();
                if (
    rs.first() == false || rs.last() == true && rs.getRow() < ACCOUNTS_PER_IP) {
                    try {
                        
    PreparedStatement ps con.prepareStatement("INSERT INTO accounts (name, password, email, birthday, macs, lastknownip) VALUES (?, ?, ?, ?, ?, ?)");
                        
    ps.setString(1login);
                        
    ps.setString(2pwd);//lol, no encryption. in fags we are <3
                        
    ps.setString(3"no@email.provided");
                        
    ps.setString(4"0000-00-00");
                        
    ps.setString(5"00-00-00-00-00-00");
                        
    ps.setString(6sockAddr.substring(1sockAddr.lastIndexOf(':')));
                        
    ps.executeUpdate();
                        
    ps.close();
                        
    success true;
                    } catch (
    SQLException ex) {
                        
    log.error("ERROR"ex);
                        return;
                    }
                }
                
    ipc.close();
                
    rs.close();
            } catch (
    SQLException ex) {
                
    log.error("Something bad with autoregister.\r\n" ex);
            }
        }
    }  
    2.- despues vamos al archivo:
    Src/net.login.handler/LoginPasswordHandler.java y lo reemplazamos x esto


    PHP:
    /*
        This file is part of the OdinMS Maple Story Server
        Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
                   Matthias Butz <matze@odinms.de>
                   Jan Christian Meyer <vimes@odinms.de>

        This program is free software: you can redistribute it and/or modify
        it under the terms of the GNU Affero General Public License as
        published by the Free Software Foundation version 3 as published by
        the Free Software Foundation. You may not use, modify or distribute
        this program under any other version of the GNU Affero General Public
        License.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU Affero General Public License for more details.

        You should have received a copy of the GNU Affero General Public License
        along with this program.  If not, see <http://www.gnu.org/licenses/>.
    */
    package net.login.handler;

    import client.AutoRegister;
    import client.MapleCharacter;
    import client.MapleClient;
    import java.util.Calendar;
    import net.MaplePacketHandler;
    import net.channel.ChannelServer;
    import server.TimerManager;
    import tools.DateUtil;
    import tools.MaplePacketCreator;
    import tools.data.input.SeekableLittleEndianAccessor;

    public final class 
    LoginPasswordHandler implements MaplePacketHandler {
        public 
    boolean validateState(MapleClient c) {
            return !
    c.isLoggedIn();
        }
    ChannelServer cserv;
    private static final 
    org.slf4j.Logger log org.slf4j.LoggerFactory.getLogger(MapleClient.class);
    public final 
    void handlePacket(SeekableLittleEndianAccessor sleaMapleClient c) {
            
    int loginok 0;
            
    String login slea.readMapleAsciiString();
            
    String pwd slea.readMapleAsciiString();
            
    c.setAccountName(login);
            final 
    boolean isBanned c.hasBannedIP() || c.hasBannedMac();

            
    boolean ipBan c.hasBannedIP();
            
    boolean macBan c.hasBannedMac();
            if (
    AutoRegister.getAccountExists(login)) {
                
    loginok c.login(loginpwdipBan || macBan);
            } else if (
    AutoRegister.success true && (!ipBan || !macBan)) {
                
    AutoRegister.createAccount(loginpwdc.getSession().getRemoteAddress().toString());
                if (
    AutoRegister.success) {
                    
    loginok c.login(loginpwdipBan || macBan);
                }
            } else 
    loginok c.login(loginpwdipBan || macBan);
            if (
    loginok == && isBanned) {
                
    loginok 3;
                
    MapleCharacter.ban(c.getSession().getRemoteAddress().toString().split(":")[0], "Mac/IP Re-ban"false);
            } else if (
    loginok != 0) {
                
    c.announce(MaplePacketCreator.getLoginFailed(loginok));
                return;
            }
            if (
    c.finishLogin() == 0) {
                
    c.announce(MaplePacketCreator.getAuthSuccess(cc.getAccountName()));
                final 
    MapleClient client c;
                
    c.setIdleTask(TimerManager.getInstance().schedule(new Runnable() {
                    public 
    void run() {
                        
    client.getSession().close(true);
                    }
                }, 
    600000));
            } else {
                
    c.announce(MaplePacketCreator.getLoginFailed(7));
            }
        }
    }  
    3.- y por ultimo agregamos esto a el sql (lo guardan como 1 block de notas y reemplazan el .txt por .sql)

    PHP:
    ALTER TABLE `accountsADD COLUMN `lastknownipVARCHAR(30NOT NULL DEFAULT '' AFTER `macs`;
    ALTER TABLE `accountsADD COLUMN `emailVARCHAR(255NOT NULL DEFAULT '' AFTER `pic`;
    creditos: wchjimmy :cool:
     
  2. God

    GodFather
    Expand Collapse
    Sargento

    Mensajes:
    364
    Me Gusta recibidos:
    0
    Ya no es necesario agregar esas sentencias en el MYSQL
     
  3. fel

    felialfon
    Expand Collapse
    Cabo

    Mensajes:
    119
    Me Gusta recibidos:
    5
    ya lo quise hacer pero no me funciono
     
  4. dev

    devilzeekR
    Expand Collapse
    Mayor

    Mensajes:
    888
    Me Gusta recibidos:
    11
    que repack estas usando? feliafon
     
  5. fel

    felialfon
    Expand Collapse
    Cabo

    Mensajes:
    119
    Me Gusta recibidos:
    5
    moopledev o_O
     

Compartir esta página