summaryrefslogtreecommitdiffstats
path: root/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script
diff options
context:
space:
mode:
Diffstat (limited to 'src/os-plugins/plugins/eduroam/files/usr/share/libpam-script')
-rwxr-xr-xsrc/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth60
-rwxr-xr-xsrc/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close37
-rwxr-xr-xsrc/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open20
3 files changed, 117 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth
new file mode 100755
index 00000000..6f3e7ec6
--- /dev/null
+++ b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth
@@ -0,0 +1,60 @@
+#!/bin/bash
+# pam_script_auth
+
+# file to write authentification method to
+file=/var/run/eduroam_auth_method
+
+# check given argument
+case "$1" in
+
+ "radius" )
+ # auth method, write it to file
+ echo "[$PAM_TYPE] Verifying credentials (through $1)..."
+ #echo "$1" > $file.$PAM_USER
+ ;;
+
+ "create_user" )
+ # create user
+ # check if user exists
+ if [ "x$(cat /etc/passwd | grep ^$PAM_USER | wc -l)" == "x1" ]
+ then
+ # user exists
+ echo "[$PAM_TYPE] User $PAM_USER exists already."
+ else
+ # user does not exists, create it.
+ echo "[$PAM_TYPE] User $PAM_USER does not exist."
+ echo "[$PAM_TYPE] Creating user $PAM_USER ..."
+
+ uid_file=/var/run/eduroam_lastuid
+ # check for /var/run/eduroam_lastuid
+ [ ! -f $uid_file ] && echo "234299000" > $uid_file
+
+ # set user information
+ uid=$(($(cat $uid_file)+1))
+ gid=1001
+ homedir=/home/$PAM_USER
+ uinfo="Eduroam Guest"
+ ushell=/bin/bash
+
+ # create home directory
+ mkdir $homedir
+ chown $uid:$gid $homedir
+
+ # create /etc/passwd entry
+ echo "$PAM_USER:x:$uid:$gid:$uinfo:$homedir:$ushell" >> /etc/passwd
+
+ # create /etc/shadow entry
+ # set today's date for last pw change
+ pwlastchange=$(($(date +%s) / 60 / 60 / 24))
+ echo "$PAM_USER:x:$pwlastchange:0:99999:7:::" >> /etc/shadow
+
+ # user creation done, adjust uid_file
+ echo "$uid" > $uid_file
+ fi
+ ;;
+
+ * )
+ echo "[$PAM_TYPE] $0 unrecognized parameter: $1 (ignoring)."
+ ;;
+
+esac
diff --git a/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close
new file mode 100755
index 00000000..0568fd64
--- /dev/null
+++ b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close
@@ -0,0 +1,37 @@
+#!/bin/bash
+# pam_script_ses_close
+# ran by root after user closes session
+
+echo "[$PAM_TYPE] Closing session for $PAM_USER..."
+# minimal uid: users with uid under this wont get deleted.
+MIN_UID=234299000
+
+# remove local user & home dir
+# only execute for uid > MIN_UID
+#if [ $(id -u $PAM_USER) -gt $MIN_UID -a "x$(cat /var/run/eduroam_auth_method.$PAM_USER)" == "xradius" ]
+if [ $(id -u $PAM_USER) -gt $MIN_UID ]
+then
+ #[ -f /var/run/eduroam_auth_method.$PAM_USER ] && rm /var/run/eduroam_auth_method.$PAM_USER
+
+ # decrement session
+ session_counter=/tmp/$PAM_USER.sessioncount
+ session_count=$(cat $session_counter)
+ echo "$(($session_count-1))" > $session_counter
+
+ # home dir ugly purge ... (log to debug...)
+ log=/var/log/eduroam
+ [ -f $log ] && rm $log
+ if [ -d /home/$PAM_USER ]
+ then
+ umount -fl /home/$PAM_USER/.gvfs &>> $log
+ chown -R root:root /home/$PAM_USER &>> $log
+ chmod -R a+rwx /home/$PAM_USER &>> $log
+ rm -rf /home/$PAM_USER &>> $log
+ fi
+ find /tmp -user $PAM_USER -delete
+ sed -i "/^$PAM_USER/d" /etc/passwd
+ sed -i "/^$PAM_USER/d" /etc/shadow
+ echo "[$PAM_TYPE] Local user deleted."
+fi
+
+echo "[$PAM_TYPE] Hope you enjoyed your stay $PAM_USER."
diff --git a/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open
new file mode 100755
index 00000000..4ca474b9
--- /dev/null
+++ b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open
@@ -0,0 +1,20 @@
+#!/bin/bash
+# pam_script session open script.
+# This script is executed by root when a new session is opened.
+echo "[$PAM_TYPE] Creating new session for $PAM_USER."
+
+min_uid=234299000
+[ $(id -u $PAM_USER) -gt $min_uid ] || exit 0
+
+session_counter=/tmp/$PAM_USER.sessioncount
+num_user_proc=$(ps aux|grep $PAM_USER -c|grep -v grep)
+
+if [ $num_user_proc -eq 0 ]
+then
+ # no running session, write 1 since we are creating a new session.
+ echo "1" > $session_counter
+else
+ # running session, increment
+ current_count=$(cat $session_counter)
+ echo "$(($current_count+1))" > $session_counter
+fi