mlton: bin/domtool-server bin/domtool-client bin/domtool-slave \
bin/domtool-admin bin/domtool-doc bin/dbtool bin/vmail \
- bin/smtplog bin/setsa
+ bin/smtplog bin/setsa bin/mysql-fixperms
smlnj: $(COMMON_DEPS) openssl/smlnj/FFI/libssl.h.cm src/domtool.cm
$(MAKE_MLB_BASE) >src/smtplog.mlb
echo "main-smtplog.sml" >>src/smtplog.mlb
+src/mysql-fixperms.mlb: src/prefix.mlb src/sources src/suffix.mlb
+ $(MAKE_MLB_BASE) >src/mysql-fixperms.mlb
+ echo "main-mysql-fixperms.sml" >>src/mysql-fixperms.mlb
+
openssl/smlnj/FFI/libssl.h.cm: openssl/openssl_sml.h
cd openssl/smlnj ; ml-nlffigen -d FFI -lh LibsslH.libh -include ../libssl-h.sml \
-cm libssl.h.cm -D__builtin_va_list="void*" \
bin/smtplog: $(COMMON_MLTON_DEPS) src/smtplog.mlb
$(MLTON) -output bin/smtplog src/smtplog.mlb
+bin/mysql-fixperms: $(COMMON_MLTON_DEPS) src/mysql-fixperms.mlb
+ $(MLTON) -output bin/mysql-fixperms src/mysql-fixperms.mlb
+
install:
cp scripts/domtool-publish /usr/local/sbin/
cp scripts/domtool-reset-global /usr/local/sbin/
-cp bin/vmail /usr/local/bin/
-cp bin/setsa /usr/local/bin/
-cp bin/smtplog /usr/local/bin/
+ -cp bin/mysql-fixperms /usr/local/bin/
cp src/plugins/domtool-postgres /usr/local/sbin/
cp src/plugins/domtool-mysql /usr/local/sbin/
vmail
setsa
smtplog
+mysql-fixperms
vmail.mlb
setsa.mlb
smtplog.mlb
+mysql-fixperms.mlb
--- /dev/null
+(* HCoop Domtool (http://hcoop.sourceforge.net/)
+ * Copyright (c) 2007, Adam Chlipala
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *)
+
+(* Driver for requesting MySQL DROP permission granting *)
+
+val _ =
+ case CommandLine.arguments () of
+ [] => Main.requestMysqlFixperms ()
+ | _ => print "Invalid command-line arguments\n"
val requestSmtpLog : string -> unit
+ val requestMysqlFixperms : unit -> unit
+
val requestApt : {node : string, pkg : string} -> OS.Process.status
val requestCron : {node : string, uname : string} -> OS.Process.status
val requestFtp : {node : string, uname : string} -> OS.Process.status
OpenSSL.close bio
end
+fun requestMysqlFixperms () =
+ let
+ val (_, bio) = requestBio (fn () => ())
+ in
+ Msg.send (bio, MsgMysqlFixperms);
+ case Msg.recv bio of
+ NONE => print "Server closed connection unexpectedly.\n"
+ | SOME m =>
+ case m of
+ MsgOk => print "Permissions granted.\n"
+ | MsgError s => print ("Failed: " ^ s ^ "\n")
+ | _ => print "Unexpected server reply.\n";
+ OpenSSL.close bio
+ end
+
fun requestApt {node, pkg} =
let
val (user, context) = requestContext (fn () => ())
NONE)))
(fn () => ())
+ | MsgMysqlFixperms =>
+ doIt (fn () => if OS.Process.isSuccess
+ (OS.Process.system "/usr/bin/sudo -H /afs/hcoop.net/common/etc/scripts/mysql-grant-table-drop") then
+ ("Requested mysql-fixperms",
+ NONE)
+ else
+ ("Requested mysql-fixperms, but execution failed!",
+ SOME "Script execution failed."))
+ (fn () => ())
+
| _ =>
doIt (fn () => ("Unexpected command",
SOME "Unexpected command"))
| MsgGrantDb {dbtype, dbname} => (OpenSSL.writeInt (bio, 37);
OpenSSL.writeString (bio, dbtype);
OpenSSL.writeString (bio, dbname))
+ | MsqMysqlFixperms => OpenSSL.writeInt (bio, 38)
fun checkIt v =
case v of
(SOME dbtype, SOME dbname) =>
SOME (MsgGrantDb {dbtype = dbtype, dbname = dbname})
| _ => NONE)
+ | 38 => SOME MsgMysqlFixperms
| _ => NONE)
end
(* MsgRegenerate without actual publishing of configuration *)
| MsgGrantDb of {dbtype : string, dbname : string}
(* Grant all allowed privileges on a DBMS database to the user *)
+ | MsgMysqlFixperms
+ (* Run the script to grant DROP privileges on MySQL tables to owning users *)
end