| rev | 
   line source | 
| 
poelzi@107
 | 
     1 #!/usr/bin/env lua
 | 
| 
poelzi@107
 | 
     2 
 | 
| 
poelzi@107
 | 
     3 OptionParser = require("utils.optparse")
 | 
| 
poelzi@107
 | 
     4 
 | 
| 
poelzi@107
 | 
     5 COMMANDS = {{"setpwd <username> <password>", "Set a user command"}, 
 | 
| 
poelzi@107
 | 
     6             {"listuser", "List usernames"},
 | 
| 
poelzi@107
 | 
     7            }
 | 
| 
poelzi@107
 | 
     8 
 | 
| 
poelzi@107
 | 
     9 t={usage="<some usage message>", version="<version string>", commands=COMMANDS}
 | 
| 
poelzi@107
 | 
    10 op=OptionParser(t)
 | 
| 
poelzi@107
 | 
    11 --op.add_option({"-t", action="safe_true", dest="test", help="<help message for this option>"})
 | 
| 
poelzi@107
 | 
    12 op.add_option({"-c", action="store", dest="config", help="config name to use", default="default"})
 | 
| 
poelzi@107
 | 
    13 op.add_option({"-w", action="store", dest="webmcp", help="path to webmcp", default="../webmcp"})
 | 
| 
poelzi@107
 | 
    14 
 | 
| 
poelzi@107
 | 
    15 options,args = op.parse_args()
 | 
| 
poelzi@107
 | 
    16 
 | 
| 
poelzi@107
 | 
    17 if #args == 0 then
 | 
| 
poelzi@107
 | 
    18     print("Error: command is required\n")
 | 
| 
poelzi@107
 | 
    19     op.print_help()
 | 
| 
poelzi@107
 | 
    20     return
 | 
| 
poelzi@107
 | 
    21 end
 | 
| 
poelzi@107
 | 
    22 
 | 
| 
poelzi@107
 | 
    23 -- dirty dirty dirty, dirty dirty, dirty dirty dow monkey patch env
 | 
| 
poelzi@107
 | 
    24 if not os.setenv then
 | 
| 
poelzi@107
 | 
    25 
 | 
| 
poelzi@107
 | 
    26     local env, getenv = { }, os.getenv
 | 
| 
poelzi@107
 | 
    27 
 | 
| 
poelzi@107
 | 
    28     function os.setenv(k,v)
 | 
| 
poelzi@107
 | 
    29         env[k] = v
 | 
| 
poelzi@107
 | 
    30     end
 | 
| 
poelzi@107
 | 
    31 
 | 
| 
poelzi@107
 | 
    32     function os.getenv(k)
 | 
| 
poelzi@107
 | 
    33         return env[k] or getenv(k)
 | 
| 
poelzi@107
 | 
    34     end
 | 
| 
poelzi@107
 | 
    35 
 | 
| 
poelzi@107
 | 
    36 end
 | 
| 
poelzi@107
 | 
    37 
 | 
| 
poelzi@107
 | 
    38 -- detect current path FIXME: platform portable
 | 
| 
poelzi@107
 | 
    39 local PWD = io.popen("pwd"):read()
 | 
| 
poelzi@107
 | 
    40 os.setenv("WEBMCP_APP_BASEPATH", PWD)
 | 
| 
poelzi@107
 | 
    41 os.setenv("WEBMCP_CONFIG_NAME", options.config)
 | 
| 
poelzi@107
 | 
    42 os.setenv("WEBMCP_INTERACTIVE", "yes")
 | 
| 
poelzi@107
 | 
    43 
 | 
| 
poelzi@107
 | 
    44 -- load webmcp framework
 | 
| 
poelzi@107
 | 
    45 WEBMCP_PATH = options.webmcp .. "/framework/"
 | 
| 
poelzi@107
 | 
    46 dofile(options.webmcp .. "/framework/cgi-bin/webmcp.lua")
 | 
| 
poelzi@107
 | 
    47 
 | 
| 
poelzi@107
 | 
    48 function error(why)
 | 
| 
poelzi@107
 | 
    49     print(why)
 | 
| 
poelzi@107
 | 
    50     os.exit(2)
 | 
| 
poelzi@107
 | 
    51 end
 | 
| 
poelzi@107
 | 
    52 
 | 
| 
poelzi@107
 | 
    53 if args[1] == "setpwd" then
 | 
| 
poelzi@107
 | 
    54   if #args < 2 then
 | 
| 
poelzi@107
 | 
    55     error("login is required")
 | 
| 
poelzi@107
 | 
    56   end
 | 
| 
poelzi@107
 | 
    57   require("model.member")
 | 
| 
poelzi@107
 | 
    58   user = Member:by_login(args[2])
 | 
| 
poelzi@107
 | 
    59   if not user then
 | 
| 
poelzi@107
 | 
    60     error("User "..args[2].." not found")
 | 
| 
poelzi@107
 | 
    61   end
 | 
| 
poelzi@107
 | 
    62   print("Enter password:")
 | 
| 
poelzi@107
 | 
    63   password = io.read()
 | 
| 
poelzi@107
 | 
    64   if password then
 | 
| 
poelzi@107
 | 
    65     user:set_password(password)
 | 
| 
poelzi@107
 | 
    66     user:save()
 | 
| 
poelzi@107
 | 
    67   end
 | 
| 
poelzi@107
 | 
    68 end
 | 
| 
poelzi@107
 | 
    69 
 | 
| 
poelzi@107
 | 
    70 if args[1] == "listusers" then
 | 
| 
poelzi@107
 | 
    71   require("model.member")
 | 
| 
poelzi@107
 | 
    72   sel = Member:new_selector()
 | 
| 
poelzi@107
 | 
    73   users = sel:exec()
 | 
| 
poelzi@107
 | 
    74   --sel:optional_object_mode()
 | 
| 
poelzi@107
 | 
    75   print("Login                           Active")
 | 
| 
poelzi@107
 | 
    76   for i,v in pairs(users) do
 | 
| 
poelzi@107
 | 
    77     if v.login then
 | 
| 
poelzi@107
 | 
    78       print(v.login .. string.rep(" ", 25-#v.login), v.active)
 | 
| 
poelzi@107
 | 
    79     end
 | 
| 
poelzi@107
 | 
    80   end
 | 
| 
poelzi@107
 | 
    81 end
 | 
| 
poelzi@107
 | 
    82 
 | 
| 
poelzi@107
 | 
    83 
 | 
| 
poelzi@107
 | 
    84 
 | 
| 
poelzi@107
 | 
    85 
 | 
| 
poelzi@107
 | 
    86 
 |