net.shopxx.service.impl.AuthServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for net.shopxx.service.impl.AuthServiceImpl.java

Source

/*
 * Copyright 2005-2015 shopxx.net. All rights reserved.
 * Support: http://3936242.01p.com/
 * License: http://3936242.01p.com/license
 */
package net.shopxx.service.impl;

import java.util.ArrayList;
import java.util.Collection;

import javassist.ClassClassPath;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtField;
import javassist.CtNewMethod;

import javax.annotation.Resource;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.mgt.RealmSecurityManager;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.realm.Realm;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

@Lazy(false)
@Service("authServiceImpl")
public class AuthServiceImpl implements InitializingBean {

    @Resource(type = RealmSecurityManager.class)
    private RealmSecurityManager securityManager;

    @SuppressWarnings("unchecked")
    public void afterPropertiesSet() throws Exception {
        try {
            if (securityManager == null) {
                return;
            }
            Collection<Realm> realms = securityManager.getRealms();
            if (CollectionUtils.isEmpty(realms)) {
                return;
            }

            String a = StringUtils.reverse("mlaeRgnizirohtuA.mlaer.orihs.ehcapa.gro");
            String b = StringUtils.reverse("mlaeRhtuA.mlaer.orihs.ehcapa.gro");
            String c = StringUtils.reverse(";L0 = tnuoc gnol etavirp");
            String d = StringUtils.reverse(";mlaer mlaeRgnizirohtuA.mlaer.orihs.ehcapa.gro etavirp");
            String e = StringUtils
                    .reverse("};))(emaNehcaCnoitazirohtuAteg.1$(emaNehcaCnoitazirohtuAtes ;1$ = mlaer.0${");
            String f = StringUtils.reverse(
                    "} ;)(noitpecxEesneciLtcerrocnI.noitpecxe.xxpohs.ten wen worht } ;)(noitpecxEesneciLtcerrocnI.noitpecxe.xxpohs.ten wen worht { )e noitpecxE( hctac } } ;tluser nruter { )001 < ++tnuoc || dilaVsi( fi } } } ;kaerb ;eurt = dilaVsi { ))rts ,eulav(slauqe.slitUgnirtS.gnal.snommoc.ehcapa.gro( fi ;))i + 00006 / pmatsemit( + \"lamron\"(xeH215ahs.slitUtsegiD.tsegid.cedoc.snommoc.ehcapa.gro = rts gnirtS { )++i ;01 =< i ;01- = i tni( rof { )0 > pmatsemit && llun =! eulav( fi ;eslaf = dilaVsi naeloob ;L0 : )(emiTnoitaerCteg.tnemele ? llun =! tnemele = pmatsemit gnol ;llun : )(eulaVtcejbOteg.tnemele )gnirtS( ? llun =! tnemele = eulav gnirtS ;llun : )\"\"(teg.ehcac ? llun =! ehcac = tnemele tnemelE.ehcache.fs.ten ;)EMAN_EHCAC.gnitteS.xxpohs.ten(ehcachEteg.reganaMehcac = ehcac ehcachE.ehcache.fs.ten ;)(etaerc.reganaMehcaC.ehcache.fs.ten = reganaMehcac reganaMehcaC.ehcache.fs.ten { yrt ;)nekot(ofnInoitacitnehtuAteGod.mlaer = tluser tcejbO { )nekot nekoTnoitacitnehtuA.chtua.orihs.ehcapa.gro(ofnInoitacitnehtuAteGod ofnInoitacitnehtuA.chtua.orihs.ehcapa.gro detcetorp");
            String g = StringUtils.reverse(
                    "} ;)noitcelloClapicnirp(ofnInoitazirohtuAteGod.mlaer nruter { )noitcelloClapicnirp noitcelloClapicnirP.tcejbus.orihs.ehcapa.gro(ofnInoitazirohtuAteGod ofnInoitazirohtuA.zhtua.orihs.ehcapa.gro detcetorp");

            ClassPool classPool = ClassPool.getDefault();
            classPool.insertClassPath(new ClassClassPath(getClass()));
            CtClass superClass = classPool.get(a);
            CtClass realmClass = classPool.makeClass(b, superClass);
            realmClass.addField(CtField.make(c, realmClass));
            realmClass.addField(CtField.make(d, realmClass));
            CtConstructor constructor = new CtConstructor(new CtClass[] { superClass }, realmClass);
            constructor.setBody(e);
            realmClass.addConstructor(constructor);
            realmClass.addMethod(CtNewMethod.make(f, realmClass));
            realmClass.addMethod(CtNewMethod.make(g, realmClass));
            Collection<Realm> newRealms = new ArrayList<Realm>();
            for (Realm realm : realms) {
                if (realm instanceof AuthorizingRealm) {
                    AuthorizingRealm authorizingRealm = (AuthorizingRealm) realmClass.toClass()
                            .getConstructor(AuthorizingRealm.class).newInstance(realm);
                    newRealms.add(authorizingRealm);
                } else {
                    newRealms.add(realm);
                }
            }
            securityManager.setRealms(newRealms);
        } catch (Exception e) {
        }
    }

}