TIPTOP ERP 用户密码修改

来源:互联网 发布:数组指针指向一维数组 编辑:程序博客网 时间:2024/04/30 00:24

由于TIPTOP ERP 用户更改口令不是很方便,所以写了个程序用来更改用户口令

(偷笑按理来说不是自己亲自写的,是从别人那里要来改过后的大笑

好东西总是要共享的嘛大笑)

以前的修改界面如下:【输入的内容是看不到的,造成用户有时候不知所措偷笑

运行p_pw界面及操作如下:

程序信息如下:(per文件与4gl文件)

*********************************************************************************************************************程序编号: p_pw.4gl程序说明:TIPTOP ERP用户密码修改程序所在目录4gl文件:/u1/topprod/topcust/czz/4gl/p_pw.4glper文件:/u1/topprod/topcust/czz/per/p_pw.per*********************************************************************************************************************

.per文件

SCHEMA FORMONLYLAYOUT  VBOX    FOLDER      PAGE page01 (TEXT="Main")        GRID          {           username       [username         ][name     ]            Oldpassword    [old              ]            Newpassword    [new              ]            REPassword     [renew            ]           }        END --GRID      END --PAGE    END --FOLDER  END --VBOXEND --LAYOUT ATTRIBUTES             username = FORMONLY.username,NOENTRY;             name     = FORMONLY.name,NOENTRY;             old      = FORMONLY.old;             new      = FORMONLY.new;              renew    = FORMONLY.renew;END


.4gl文件

# Prog. Version..: '3.10.02-06.08.23(00005)'     ## Pattern name...: p_pw.4gl# Descriptions...: 可视化界面修改用户密码# Date & Author..: 2012/09/26 By XXXXDATABASE dsGLOBALS "../../config/top.global"DEFINE p_row,p_col     SMALLINT,       g_oldpwd        VARCHAR(50),             g_newpwd        VARCHAR(50),            g_repwd         VARCHAR(50),       g_zx02          LIKE zx_file.zx02    MAIN    OPTIONS                                     #改变一些系统预设值              FORM LINE     FIRST + 2,                #画面开始的位置                     MESSAGE LINE  LAST,                     #讯息显示的位置                     PROMPT LINE   LAST,                     #提示讯息的位置                      INPUT NO WRAP                           #输入的方式: 不打转                  DEFER INTERRUPT                         #撷取中断键, 由程式处理       IF (NOT cl_user()) THEN                             EXIT PROGRAM   END IF   WHENEVER ERROR CALL cl_err_msg_log    IF (NOT cl_setup("CZZ")) THEN      EXIT PROGRAM   END IF   LET p_row = ARG_VAL(1)   LET p_col = ARG_VAL(2)     CALL  cl_used(g_prog,g_time,1) RETURNING g_time #No:MOD-580088  HCN 20050818  #No.FUN-6A0081   OPEN WINDOW p_pw_w AT p_row,p_col WITH FORM "czz/42f/p_pw"       ATTRIBUTE (STYLE="chpw", TEXT="chpw") #No:FUN-580092 HCN   CALL cl_ui_init()   LET g_action_choice = ""##显示用户账号和姓名*******************************************   SELECT zx02 INTO g_zx02 FROM zx_file WHERE zx01=g_user   IF (SQLCA.SQLCODE) THEN      DISPLAY g_user CLIPPED," has no data in zx_file."      RETURN FALSE   END IF   DISPLAY g_user TO FORMONLY.username ATTRIBUTE(REVERSE,BOLD,GREEN)    DISPLAY g_zx02 TO FORMONLY.name     ATTRIBUTE(REVERSE,BOLD,GREEN) ##END**********************************************************   CALL p_pw_i()   CALL p_pw_menu()   CLOSE WINDOW p_pw_w     CALL  cl_used(g_prog,g_time,2) RETURNING g_time #No:MOD-580088  HCN 20050818  #No.FUN-6A0081END MAINFUNCTION p_pw_menu()    MENU ""        BEFORE MENU        ON ACTION pwd            CALL p_pw_modify()        ON ACTION exit            LET g_action_choice = "exit"            EXIT MENU        ON ACTION controlg            CALL cl_cmdask()        ON IDLE g_idle_seconds           CALL cl_on_idle()           CONTINUE MENU        COMMAND KEY(INTERRUPT)            LET INT_FLAG=FALSE            LET g_action_choice = "exit"            EXIT MENU    END MENUEND FUNCTIONFUNCTION p_pw_i()  INPUT g_oldpwd,g_newpwd,g_repwd FROM old,new,renew      BEFORE INPUT         CALL cl_set_comp_entry("old,new,renew",TRUE)      AFTER FIELD renew         IF g_repwd <> g_newpwd THEN            CALL cl_err('','czz-101',1)            NEXT FIELD new         END IF      ON ACTION CANCEL         LET g_action_choice = "exit"         CALL cl_set_act_visible("pwd", FALSE)         EXIT INPUT   END INPUT      IF INT_FLAG THEN    LET INT_FLAG = 0    CLOSE WINDOW p_pw_w    CALL cl_used(g_prog,g_time,2) RETURNING g_time       EXIT PROGRAM   END IF  END FUNCTIONFUNCTION p_pw_modify()DEFINE        l_script    STRING,             l_execute   STRING,             l_return    STRINGDEFINE    ch                            base.Channel,         l_status                      SMALLINT,  l_index                       SMALLINT,  l_temp                        STRING,  l_text                        STRING     RUN "rm -rf /u1/topprod/tiptop/azz/4gl/pwd"    RUN "rm -rf /u1/topprod/tiptop/azz/4gl/pwd.log"    LET l_script = '#!usr/bin/expect ','\n',                   '  set old [lindex $argv 0]','\n',                   '  set new [lindex $argv 1]','\n',                   '  spawn   passwd ','\n',                   '  expect "password:" ','\n',                   '  send "$old\\r"   ','\n',                   '  sleep 1','\n',                   '  expect "password:"','\n',                   '  send "$new\\r"       ','\n',                   '  sleep 1        ','\n',                   '  expect "password:"','\n',                   '  send "$new\\r"  ','\n',                   '  expect eof','\n',                   '  exit'    RUN "echo '"||l_script||"' > /u1/topprod/tiptop/azz/4gl/pwd"    RUN "chmod 777 /u1/topprod/tiptop/azz/4gl/pwd"    RUN "chmod 777 /u1/topprod/tiptop/azz/4gl/pwd.log"       LET l_execute = "expect /u1/topprod/tiptop/azz/4gl/pwd ",g_oldpwd," ",g_newpwd," > /u1/topprod/tiptop/azz/4gl/pwd.log"    RUN l_execute    SLEEP 2        LET ch = base.Channel.create()     CALL ch.openFile('/u1/topprod/tiptop/azz/4gl/pwd.log','r')     LET l_status = ch.read(l_temp)     WHILE l_status        LET l_text = l_text.trim(),l_temp.trim()       LET l_status = ch.read(l_temp)      END WHILE           LET l_index = 0     LET l_index = l_text.getIndexOf('successfully',1)     IF l_index > 0 THEN        CALL cl_err('successfully','!',1)        EXIT PROGRAM     ELSE        LET l_index = l_text.getIndexOf('Authentication token manipulation error',1)        IF l_index > 0 THEN           CALL cl_err('','czz-102',1)        #认证令牌操作错误        ELSE           LET l_index = l_text.getIndexOf('too short',1)           IF l_index > 0 THEN              CALL cl_err('','czz-103',1)     #新输入的密码太短           ELSE              LET l_index = l_text.getIndexOf('Password unchanged',1)              IF l_index > 0 THEN                 CALL cl_err('','czz-108',1)  #密码未改变              ELSE                 LET l_index = l_text.getIndexOf('too similar to the old',1)                 IF l_index > 0 THEN                    CALL cl_err('','czz-107',1) #新密码与旧密码太相似了                 ELSE                    LET l_index = l_text.getIndexOf('not contain enough DIFFERENT characters',1)                    IF l_index > 0 THEN                       CALL cl_err('','czz-104',1)  #密码不包含足够的不同字符                    ELSE                       LET l_index = l_text.getIndexOf('too simplistic',1)                       IF l_index > 0 THEN                          CALL cl_err('','czz-105',1) #新密码太过简单化                       ELSE                          LET l_index = l_text.getIndexOf('based on a dictionary word',1)                          IF l_index > 0 THEN                             CALL cl_err('','czz-106',1) #新密码包含了基于字典中的单词                          ELSE                             CALL cl_err(l_text,'!',1)                          END IF                       END IF                    END IF                 END IF              END IF           END IF        END IF       #CALL cl_err(l_text,'!',1)        CALL p_pw_i()        IF g_action_choice = "exit" THEN           CALL cl_set_act_visible("pwd", FALSE)        END IF        CALL p_pw_menu()        IF INT_FLAG OR g_action_choice = "exit" THEN           EXIT PROGRAM        END IF     END IF END FUNCTION

 

原创粉丝点击